# 高可用配置搭配Sentinel機制
---> Redis (Replica)
client ---> Redis (Master)
---> Redis (Replica)
-------------------------------------------------
sentinel
基本上sentinel不允許localhost以外的連線,如果需要外部連入則除了關閉保護模式外,也需要額外配置bind或是防火牆,避免安全性風險.
# 預設
# protected-mode yes
# 關閉保護模式
protected-mode no
bind 192.138.10.1 ...
sentinel 的實體端口.
# 預設
port 26379
是否設定sentinel跑在背景還是前景模式.
# 預設
daemonize no
# 背景模式
daemonize yes
搭配上面daemon啟動方式使用,會在啟動時寫入指定路徑檔案,關閉服務時則刪除.
# 預設
pidfile /var/run/redis-sentinel.pid
設定sentinel的日誌資料.
# 預設
logfile ""
# 加入檔案路徑
logfile "/tmp/redis-sentinel_26379.log"
設定NAT網路環境中的IP與Port.
# 預設
# sentinel announce-ip 1.2.3.4
# sentinel announce-port 26379
設定暫放資料夾.
# 預設
dir /tmp
設定監控目前的Master與當Master發生異常時需要幾個sentinel確認才可以切換.
# 預設
# Redis mymaster ip=127.0.0.1 port 6379,當異常發生時需要有2台sentinel認可才可以切換
sentinel monitor mymaster 127.0.0.1 6379 2
# sentinel切換成一台
sentinel monitor mymaster 127.0.0.1 6379 1
設定for sentinel連線到Redis Master時所需要的密碼.
# 預設
# sentinel auth-pass mymaster MySUPER--secret-0123passw0rd
設定for sentinel連線到Redis Master時所需要的使用者.
sentinel auth-user <master-name> <username>
設定當Replica與Master資料同步停止超過多少秒則不能成為Master.
# 預設
# 資料同步停止不可以超過30秒
sentinel down-after-milliseconds mymaster 30000
從Redis 6.2 版本支援使用者相關權限設定.
# 預設
# user worker +@admin +@connection ~* on >ffa9203c493aa99
設定acl記錄中的項目上限.
# 預設
acllog-max-len 128
透過檔案設定acl.需注意如果sentinel.config已經設定acl,則會拒絕檔案acl設定.
# 預設
# aclfile /etc/redis/sentinel-users.acl
設定sentinel密碼
# 預設
# requirepass <password>
設定sentinel與其他sentinel間連線的使用者.
# 預設
sentinel sentinel-user <username>
設定sentinel與其他sentinel間的連線密碼.
# 預設
sentinel sentinel-pass <password>
設定與Master平行同步資料。
# 預設
sentinel parallel-syncs mymaster 1
在failover切換時需要多少時間內完成,否則失敗.
# 預設 3分鐘
sentinel failover-timeout mymaster 180000
sentinel notification-script 和 sentinel reconfig-script 腳本依序被執行時,執行結果回應1時則會重試10次,回應2時則不會重試,中斷腳本進行則會收到回應1,腳本執行時間最長不可以超過60秒.
通過腳本設定當sentinel有事件發生時,發送訊息或是電子郵件通知相關人員.
# 預設
# sentinel notification-script mymaster /var/redis/notify.sh
通過腳本設定Master的組態檔.
# 預設
# sentinel client-reconfig-script mymaster /var/redis/reconfig.sh
設定是否不可以在sentinel運行中修改CLIENTS RECONFIGURATION SCRIPT腳本.
# 預設
sentinel deny-scripts-reconfig yes
透過指定將Master的組態檔更名.
設定是否以Server主機名代替連線IP.
# 預設
SENTINEL resolve-hostnames no
當設定以Server主機名代替連線IP時,主機名稱是否要唯一.
# 預設
SENTINEL announce-hostnames no